1. Field of the Invention
This invention relates to communication systems. More particularly, the invention relates to a Local Area Network (LAN) in which automatic retry of a transmit, independent of a host processor, occurs after an underrun condition exists in the LAN.
2. Description of Prior Art
In local area networks in which a host system is coupled to the network through a Peripheral Component Interconnect (PCI) and a Media Access Control (MAC) device, a transmit underrun occurs when the network reads data faster from the MAC device than the PCI bus transfers data to the MAC device. Due to the poor performance of the PCI bus in many PC's or host systems available today, MAC devices can have difficulty moving data from the host system across the PCI bus to a transmit storage device in the MAC device fast enough to keep data flowing across the network interface. Often delay states are introduced on the PCI bus by the host system adding time to the transfer. The initial time causes the data to be read out of the transmit storage device on the network side, faster than data is written into the storage device on the system side. If the data being written in to the transmit storage device is at a slower rate than being taken out, a transmit underrun can occur. If the transmit underrun occurs, the host software is responsible for re-initiating transmit of the frame. Typically, the receiving station would detect that a frame was missing. The station would then send a request back to the sending station that had the underrun asking for a retransmit of the frame and all subsequent frames in the sequence. Typically, the order of the frame sequence must be maintained. The host system for the sending station would process requests and re-queue the frame or sequence of frames for transmission which degrades performance of the system.
Prior art related to underrun conditions in local area networks include the following:
U.S. Pat. No. 4,942,553 issued Jul. 17, 1990, discloses detecting a fill or empty level of a storage device in a local area network. When a fill or empty level exceeds a first request level, notification is made to a Direct Memory Access (DMA) or a coprocessor. The fill or empty level is compared to a second request level and once that level exceeds the second level, notification to the CPU is generated. In most cases, the DMA or coprocessor is able to obtain control of the bus before the CPU interrupt is reached, thereby preventing waste or CPU intervention as well as transmit storage overrun/underruns.
U.S. Pat. No. 4,945,548 issued Jul. 31, 1990, discloses detecting impending overflow and/or underrun conditions of an elasticity buffer. Write overflow or read underrun of a storage element is detected before any data corruption can occur by comparing an input and output pointer. Another condition occurs if the input/output pointers overlap for a threshold period, which can be shorter than the period required for writing or reading of a multi-bit data unit to or from the buffer. The overlap time period is determined by comparing the pointers at one or more sampling times corresponding to the selected phase of the clock.
IBM Technical Disclosure Bulletin (TDB) published November, 1994, pages 457-458, discloses a device control program that manages the flow of data from a data server to a buffer output device such that the data is received at the device slightly before the device finishes with the previous data. A network-delay and an output-read are measured empirically by a device control program and adaptively adjusted at a rate of allowable underrun and overrun dictated by a print system.
IBM TDB published May, 1991, pages 370-371, discloses a technique for detecting overruns and underrun conditions in a communication network while guaranteeing the data integrity of a storage buffer.
None of the prior art disclose a LAN in which a MAC device makes transmit underrun conditions transparent to sending and receiving stations using transmit logic means for tracking each frame transmitted and re-transmitting the frame upon an underrun independent of a host processor.